/**
 * @Author wywinstonwy
 * @Date 2022/1/8 7:55 下午
 * @Description:
 */

import 'package:demo202112/utils/common_appbar.dart';
import 'package:flutter/cupertino.dart';
import "package:flutter/material.dart";

class MyDayPicker extends StatefulWidget {
  const MyDayPicker({Key? key}) : super(key: key);

  @override
  _MyDayPickerState createState() => _MyDayPickerState();
}

class _MyDayPickerState extends State<MyDayPicker> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: getAppBar('DayPicker'),
      body: Column(
        children: [
          // _buildDayPicker(),
          // ElevatedButton(
          //     onPressed: () {
          //       _buildShowDatePicker();
          //     },
          //     child: Text('点击弹出showDayPicker')),
          //
          // ElevatedButton(
          //     onPressed: () {
          //       _buildShowDatePickerForYear();
          //     },
          //     child: Text('点击弹出showDayPickerYear')),
          //
          // ElevatedButton(
          //     onPressed: () {
          //       _buildshowDatePickerForTheme();
          //     },
          //     child: Text('点击弹出showDayPickerTheme')),
          //
          // ElevatedButton(
          //     onPressed: () {
          //       _buildshowTimePicker();
          //     },
          //     child: Text('点击弹出showTIMEpicker')),

          // _buildCalendarDatePicker(),
          _buildCupertinoTimerPicker()
        ],
      ),
    );
  }

  _buildDayPicker() {
    return CalendarDatePicker(
        initialDate: DateTime.now(),
        firstDate: DateTime(2000),
        lastDate: DateTime(2023),
        onDateChanged: (DateTime dateTime) {
          print('dateTime:$dateTime');
        });
  }

  _buildShowDatePicker() {
    showDatePicker(
        context: context,
        initialDate: DateTime.now(),
        // 初始化选中日期
        firstDate: DateTime(2020, 6),
        // 开始日期
        lastDate: DateTime(2025, 6),
        // 结束日期
        // initialEntryMode: DatePickerEntryMode.input,  // 日历弹框样式

        textDirection: TextDirection.ltr,
        // 文字方向

        currentDate: DateTime(2022, 1, 10),
        // 当前日期
        helpText: "helpText",
        // 左上方提示
        cancelText: "取消",
        // 取消按钮文案
        confirmText: "确认",
        // 确认按钮文案

        errorFormatText: "errorFormatText",
        // 格式错误提示
        errorInvalidText: "errorInvalidText",
        // 输入不在 first 与 last 之间日期提示

        fieldLabelText: "fieldLabelText",
        // 输入框上方提示
        fieldHintText: "fieldHintText",
        // 输入框为空时内部提示

        initialDatePickerMode: DatePickerMode.day,
        // 日期选择模式，默认为天数选择
        useRootNavigator: true,
        // 是否为根导航器
        // 设置不可选日期，这里将 2020-10-15，2020-10-16，2020-10-17 三天设置不可选
        selectableDayPredicate: (dayTime) {
          if (dayTime == DateTime(2020, 10, 15) ||
              dayTime == DateTime(2020, 10, 16) ||
              dayTime == DateTime(2020, 10, 17)) {
            return false;
          }
          return true;
        });
  }

  _buildShowDatePickerForYear() {
    showDatePicker(
      context: context,
      initialDate: DateTime.now(),
      // 初始化选中日期
      firstDate: DateTime(2018, 6),
      // 开始日期
      lastDate: DateTime(2025, 6),
      // 结束日期
      currentDate: DateTime(2020, 10, 20),
      // 当前日期
      helpText: "helpText",
      // 左上方提示
      cancelText: "cancelText",
      // 取消按钮文案
      confirmText: "confirmText",
      // 确认按钮文案
      initialDatePickerMode: DatePickerMode.year,
    );
  }

  _buildshowDatePickerForTheme() {
    showDatePicker(
      context: context,
      builder: (context, child) {
        return Theme(
            data: ThemeData(cardColor: Colors.red, brightness: Brightness.dark),
            child: child!);
      },
      initialDate: DateTime.now(),
      // 初始化选中日期
      firstDate: DateTime(2020, 6),
      // 开始日期
      lastDate: DateTime(2025, 6),
      // 结束日期
      // initialEntryMode: DatePickerEntryMode.input,  // 日历弹框样式

      textDirection: TextDirection.ltr,
      // 文字方向

      currentDate: DateTime(2022, 1, 10),
      // 当前日期
      helpText: "helpText",
      // 左上方提示
      cancelText: "取消",
      // 取消按钮文案
      confirmText: "确认",
      // 确认按钮文案

      errorFormatText: "errorFormatText",
      // 格式错误提示
      errorInvalidText: "errorInvalidText",
      // 输入不在 first 与 last 之间日期提示

      fieldLabelText: "fieldLabelText",
      // 输入框上方提示
      fieldHintText: "fieldHintText",
      // 输入框为空时内部提示

      initialDatePickerMode: DatePickerMode.year, // 日期选择模式，默认为天数选择
      // useRootNavigator: true, // 是否为根导航器
    );
  }

  _buildshowTimePicker() async {
    var result = await showTimePicker(
        context: context,
        initialTime: TimeOfDay(hour: 11, minute: 30),
        cancelText: "取消",
        helpText: "请选择时间---》",
        confirmText: "确认");
    print(result);
  }

  _buildCalendarDatePicker() {
    return CalendarDatePicker(
        initialDate: DateTime.now(),
        // 初始化选中日期
        currentDate: DateTime(2020, 10, 18),
        firstDate: DateTime(2020, 9, 10),
        // 开始日期
        lastDate: DateTime(2022, 9, 10),
        // 结束日期
        initialCalendarMode: DatePickerMode.day,
        // 日期选择样式
        onDateChanged: (DateTime value) {
          print(value);
        },
        // 月份改变回调函数
        onDisplayedMonthChanged: (dateTime) {
          print("onDisplayedMonthChanged $dateTime");
        },
        // 筛选日期可不可点回调函数
        selectableDayPredicate: (dayTime) {
          if (dayTime == DateTime(2020, 10, 15) ||
              dayTime == DateTime(2020, 10, 16) ||
              dayTime == DateTime(2020, 10, 17)) {
            return false;
          }
          return true;
        });
  }
  _buildCupertinoTimerPicker(){
    return  CupertinoTimerPicker(
      mode: CupertinoTimerPickerMode.hm, // 展示模式
      initialTimerDuration: Duration(hours: 5, minutes: 10), // 默认选中事时间
      minuteInterval: 10, // 分钟间隔
      secondInterval: 10, // 秒间隔
      alignment: Alignment.center, // 对齐方式
      backgroundColor: Colors.yellow, // 背景颜色
      // 滑动后，每次改变回调函数
      onTimerDurationChanged: (dayTime){
        print("onTimerDurationChanged $dayTime");
      },
    );
  }
}
